/**
 * 格式化日期时间
 * @param {string|Date} date - 日期字符串或日期对象
 * @param {boolean} includeTime - 是否包含时间
 * @returns {string} 格式化后的日期时间字符串
 */
export function formatDateTime(date, includeTime = true) {
  if (!date) return '';
  
  const d = new Date(date);
  
  // 检查日期是否有效
  if (isNaN(d.getTime())) {
    return '';
  }
  
  // 格式化日期部分
  const year = d.getFullYear();
  const month = String(d.getMonth() + 1).padStart(2, '0');
  const day = String(d.getDate()).padStart(2, '0');
  const dateStr = `${year}-${month}-${day}`;
  
  if (!includeTime) {
    return dateStr;
  }
  
  // 格式化时间部分
  const hours = String(d.getHours()).padStart(2, '0');
  const minutes = String(d.getMinutes()).padStart(2, '0');
  const seconds = String(d.getSeconds()).padStart(2, '0');
  
  return `${dateStr} ${hours}:${minutes}:${seconds}`;
}

/**
 * 格式化日期（不含时间）
 * @param {string|Date} date - 日期字符串或日期对象
 * @returns {string} 格式化后的日期字符串
 */
export function formatDate(date) {
  return formatDateTime(date, false);
}

/**
 * 格式化货币
 * @param {number} amount - 金额
 * @param {string} currency - 货币符号
 * @returns {string} 格式化后的金额字符串
 */
export function formatCurrency(amount, currency = '¥') {
  if (amount === undefined || amount === null) return '';
  
  return `${currency} ${parseFloat(amount).toFixed(2)}`;
}

/**
 * 格式化数字
 * @param {number} num - 数字
 * @param {number} digits - 小数位数
 * @returns {string} 格式化后的数字字符串
 */
export function formatNumber(num, digits = 2) {
  if (num === undefined || num === null) return '';
  
  return parseFloat(num).toFixed(digits);
}

/**
 * 格式化价格
 * @param {number} price - 价格
 * @returns {string} 格式化后的价格字符串
 */
export function formatPrice(price) {
  return formatCurrency(price);
} 